// 提供复用逻辑的函数 (钩子)
import { ref } from 'vue'
import { useIntersectionObserver } from '@vueuse/core'
/**
 *数据懒加载函数
 * @param {Elemnt} target -Dom对象
 * @param {Function} apiFn -API函数
 */
export const useLazyData = (apiFn) => {
  // 需要
  // 1.被观察的函数
  // 2.不同的api函数
  const target = ref(null)
  // 必须给一个空数组不然会报错
  const result = ref([])
  const { stop } = useIntersectionObserver(
    target,
    ([{ isIntersecting }], observerElement) => {
      if (isIntersecting) {
        stop()
        // 调用API获取数据
        apiFn().then(data => {
          result.value = data.result
        })
      }
    }
  )
  // 返回-->数据
  return {
    target, result
  }
}
